Пульт.Онлайн /

Математические выражения

Математические выражения в прототипах
Математические выражения на мнемосхемах
Логические функции
Арифметические функции
Битовые функции
Тригонометрические функции
Операторы
Специальные функции в скриптах


Математические выражения в прототипах

Некоторые параметры переменных допускают использование математических выражений с подстановкой значений одной или нескольких переменных. Например, виртуальная переменная в режиме "Выражение" или аварийные переменные (параметры Сигнал, Уставка и т.п.).

Простейшее выражение может состоять из имени наблюдаемой переменной. Имена переменных необходимо предварять символом $.

Допустимо использование как локальных (в контексте узла) имен переменных, так проектных и глобальных. Для доступа к переменным того же узла (локальные имена) указывайте имя переменной в прототипе, например, $var1.

Для доступа к переменным других узлов того же проекта, указывайте имя с префиксом узла, например, $N25_var1.

Для доступа к переменным других проектов, указывайте имя с префиксом проекта и узла, например, $P3_N25_var1.

Глобальное и проектное имя можно узнать, кликнув на переменную в интерфейсе, в списке переменных узла или в редакторе проектов на вкладке узла "Переменные".

При ошибке одной из переменных в выражении, значение выражения будет равно ошибке DRV_ERROR_UNRELIABLE_VAR (недостоверное значение).

Так же доступны суффиксы (через два подчеркивания):

__error - код ошибки переменной
__time - Timestamp (в миллисекундах) последнего изменения статуса переменной
__value - значение (позволяет всегда получать последнее достоверное значение переменной и игнорировать ошибку).

Примеры выражений

$var1 - локальное (в контексте узла) имя переменной
$P3_N25_var1 - глобальное имя переменной (префикс проекта + префикс узла + имя)
$var1+$var2 - сумма значений var1 и var2
$var1__value+$var2__value - сумма последних достоверных значений var1 и var2 (ошибки переменных игнорируются)
if($sensor__error,$min_power,$max_power) - функция if проверяет код ошибки переменной sensor и возвращает значение одной из переменных xxx_power
sqrt(pow($active_power,2)+pow($reactive_power,2)) - вычисление общей мощности
bit($status,3) - возвращает 1, если установлен четвертый бит (бит с индексом 3) в переменной status list($mode,0,"OFF",1,"ON",2,"AUTO") - возвращает OFF, если $mode == 0; ON, если $mode == 1; AUTO, если $mode == 2
$temperature/10 - возвращает значение переменной temperature, деленное на 10


Математические выражения на мнемосхемах

На мнемосхемах практически в любые свойства контролов допускается прямая передача доступных свойств узла или переменной, а также подстановка математических выражений. При использовании математического выражения его необходимо обрамлять двойными фигурными скобками (см. примеры).

Доступные свойства узла

$node1.title - имя узла
$node1.path - полный путь узла
$node1.prefix - глобальный префикс узла
$node1.params.param1 - значение параметра узла (param1 замените именем требуемого параметра)
$node1.tags.mytag - 1 если тег установлен для узла, иначе - 0 (замените mytag именем требуемого тега)

Доступные свойства переменной

$node1.vars.var1.bit0 - значение отдельного бита (счет начинается с нулевого бита)
...
$node1.vars.var1.bit31

$node1.vars.var1 - значение, если нет ошибки; иначе - undefined (аналогично .status)
$node1.vars.var1.status - значение, если нет ошибки; иначе - undefined
$node1.vars.var1.value - последнее достоверное значение, не зависимо от ошибки
$node1.vars.var1.time - время (Timestamp c миллисекундами)
$node1.vars.var1.error - код ошибки
$node1.vars.var1.update - вспомогательная структура

$node1.vars.var1.global_name - глобальное имя переменной
$node1.vars.var1.name - локальное имя переменной
$node1.vars.var1.title - description, если задан; иначе - name
$node1.vars.var1.description - краткое описание переменной
$node1.vars.var1.comment - комментарий
$node1.vars.var1.unit - еденица измерения
$node1.vars.var1.tags.mytag - 1 если тег установлен для переменной, иначе - 0 (замените mytag именем требуемого тега) $node1.vars.var1.trend - 1, если переменная пишет тренд
$node1.vars.var1.physical - 1, если переменная физическая
$node1.vars.var1.payload - служебный объект payload для переменных некоторых драйверов

Примеры выражений

$node1.vars.var1 - передача в контрол статуса переменной
$node1.vars.var1.unit - передача в контрол единицы измерения переменной
$node1.vars.var1.bit3 - передача в контрол значения четвертого бита (индекс 3)
$node1.vars.var1.value - передача в контрол последнего достоверного значения
$node1.vars.var1.tags.floor2 - передача в контрол 1 если тег floor2 задан для переменной
$node1.params.host - передача в контрол параметра узла host
$node1.vars.var1 -> $node1.vars.var2 - чтение контролом из var1 и запись в var2
{{ $node1.vars.speed/10 }} RPM - передача в контрол приведенного значения скорости с суффиксом RPM dP {{ $node1.vars.press/10 }} $node1.vars.press.unit - передача в контрол приведенного давления с префиксом и ед. измерения
{{ if($node1.vars.mode.bit3 && $node1.vars.mode.bit6,'red','blue') }} - передача в контрол цветов по условию


Логические функции

if(X,Y,Z) - если X не равен 0, возвращает Y, иначе Z
list(X,I0,V0,I1,V1,I2,V2,...,In,Vn) - возвращает искомое значение по индексу, X - индекс искомого значения, In - индекс n-го значения, Vn - n-ое значение


Арифметические функции

abs(X) - модуль числа Х
cbrt(X) - кубический корень X
ceil(X) - наименьшее целое, которое не меньше чем X
exp(X) - число "e", возведенное в указанную степень.
floor(X) - наименьшее целое, которое не меньше чем X
log(X) - натуральный логарифм от X
log10(X) - десятичный логарифм от X
pow(X,Y) - возведение X в степень Y
round(X) - округляет X до целого
round2(X,Y) - округляет X до Y знаков после запятой
sqrt(X) - квадратный корень от X


Битовые функции

bit(X,Y) - возвращает 1 если в X установлен бит Y
bool(X) - возвращает 0 если X равен 0, иначе 1
double(A,B,C,D,E,F,G,H) - конвертирует 8 байт (A,B,C,D,E,F,G,H) в число формата IEEE-754 Floating Point 64-bit (Double precision)
float(A,B,C,D) - конвертирует 4 байта (A,B,C,D) в число формата IEEE-754 Floating Point 32-bit
hi16(X) - возвращает старшие 8 бит 16-битного числа
hi32(X) - возвращает старшие 16 бит 32-битного числа
lo16(X) - возвращает младшие 8 бит 16-битного числа
lo32(X) - возвращает младшие 16 бит 32-битного числа


Тригонометрические функции

acos(X) - обратный косинус Х, радианы
acosh(X) - обратный гиперболический косинус Х, радианы
asin(X) - обратный синус Х, радианы
asinh(X) - обратный гиперболический синус Х, радианы
atan(X) - обратный тангенс Х, радианы
atanh(X) - обратный гиперболический тангенс Х, радианы
atan2(X,Y) - равняется atan(X/Y), за исключением того, что в atan2 аргумент Y может принимать значение 0
cos(X) - косинус Х, радианы
cosh(X) - гиперболический косинус Х, радианы
hypot(X,Y) - гипотенуза при катетах X и Y
sin(X) - синус Х, радианы
sinh(X) - гиперболический синус Х, радианы
tan(X) - тангенс Х, радианы
tanh(X) - гиперболический тангенс Х, радианы


Операторы

-X - унарный минус
!X - унарное логическое НЕ
^X - унарное побитовое НЕ
X ** Y - возведение X в степень Y
X * Y - умножение X на Y
X / Y - деление X на Y
X % Y - остаток от деления X на Y
X + Y - сложение X и Y
X - Y - вычитание Y из X
X << Y - побитовый сдвиг X на Y бит влево
X >> Y - побитовый сдвиг X на Y бит вправо
X < Y - 1, если X меньше Y, иначе - 0
X <= Y - 1, если X меньше или равно Y, иначе - 0
X > Y - 1, если X больше Y, иначе - 0
X >= Y - 1, если X больше или равно Y, иначе - 0
X == Y - 1, если X ревен Y, иначе - 0
X != Y - 1, если X не равен Y, иначе - 0
X & Y - побитовое И
X | Y - побитовое ИЛИ
X ^ Y - побитовое исключающее ИЛИ
X && Y - логическое И
X || Y - логическое ИЛИ


Специальные функции в скриптах

str(X) - возвращает строковое представление числа X
reboot() - перезагружает устройство

  Email
  SMS